package org.springblade.modules.websocket.controller;

import lombok.AllArgsConstructor;
import org.springblade.common.cache.CacheNames;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.RedisUtil;
import org.springblade.modules.websocket.dto.MessageDTO;
import org.springblade.modules.websocket.socket.WebSocket;
import org.springframework.web.bind.annotation.*;

@RestController
@AllArgsConstructor
@RequestMapping("/pxx-websocket/")
public class WebSocketController {

    private WebSocket webSocket;
    private RedisUtil redisUtil;

    @GetMapping("/sendAllWebSocket")
    public R test() {
        String text="你们好！这是websocket群体发送！";
        webSocket.sendAllMessage(text);
        return R.data(text);
    }

    /**
     * 推送
     * 发送时存入redis
     * @param messageDTO
     * @return
     */
    @PostMapping("/sendOneWebSocket")
    public R sendOneWebSocket(@RequestBody MessageDTO messageDTO) {
        webSocket.sendOneMessage(messageDTO);
        redisUtil.set(CacheNames.ORDER_KEY+messageDTO.getReceiveId(),messageDTO.getMsg());
        return R.data(messageDTO);
    }

    /**
     * 用户在线并关闭窗口
     * 删除redis
     * @param id 此为用户id
     * @return
     */
    @GetMapping("/removeWebSocket")
    public R removeWebSocket(String id) {
        redisUtil.del(CacheNames.ORDER_KEY+id);
        return R.data(true);
    }

    /**
     * 用户登陆时
     * 查看redis 有没有离线时的信息
     * @return
     */
    @GetMapping("/loginWebSocket")
    public R loginWebSocket(String id) {
        Object res = redisUtil.get(CacheNames.ORDER_KEY + id);
        return R.data(res);
    }

    @PostMapping("/sendChatWebSocket")
    public R sendChatWebSocket(MessageDTO messageDTO) {
        webSocket.sendOneMessage(messageDTO);
       // redisUtil.set(CacheNames.ORDER_KEY+messageDTO.getId(),messageDTO.getMsg());
        return R.data(messageDTO);
    }
}
